package cn.com.bod.fas.pm.utils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.function.Supplier;
import java.util.stream.Collectors;

import org.springframework.beans.BeanUtils;

/**
 * 
 * @description 工具类
 * @author houyaoxun
 * @date 2019年9月17日上午11:13:52
 * @version 1.0.0
 * @Copyright (c) scfhdt
 */
public class DemoUtil {
	/**
	 * @description 返回格式为数字的当前时间
	 * @author houyaoxun
	 * @date 2019年9月17日
	 * @return String
	 */
	public static String getTime() {
		Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyMMddHHmmss");
		return sdf.format(date);
		
	}
	
	/**
	 * @description 返回格式为数字的当前日期
	 * @author houyaoxun
	 * @date 2019年9月17日
	 * @return
	 * @return String
	 */
	public static String getDate() {
		Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyMMdd");
		return sdf.format(date);
		
	}
	
	/**
     * @description 对象属性复制
     * @author houyaoxun
     * @date 2019年9月23日 
     * @param source 源对象
     * @param supplier 复制对象生成函数
     * @return T 复制后对象
     */
    public static <T> T beanCopy(Object source, Supplier<T> supplier) {
        T target = supplier.get();
        BeanUtils.copyProperties(source, target);
        return target;
    }
    
    /**
     * @description 复制集合
     * @author houyaoxun
     * @date 2019年9月23日 15:47:42
     * @param source 复制源
     * @param supplier 复制对象生成函数
     * @return java.util.List<T> 复制后集合
     */
    public static <T, E> List<T> listCopy(List<E> source, Supplier<T> supplier) {
        List<T> copyList = source.stream().map(item ->{
            T target = supplier.get();
            BeanUtils.copyProperties(item, target);
            return target;
        }).collect(Collectors.toList());
        return copyList;
    }
}
